// login.js
const app = getApp()
const { API } = require('../../utils/api.js')

Page({
  data: {
    username: '',
    password: '',
    showTraditionalLogin: false
  },

  onUsernameInput(e) {
    this.setData({
      username: e.detail.value
    })
  },

  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    })
  },



  async login() {
    const { username, password } = this.data

    if (!username.trim()) {
      wx.showToast({
        title: '请输入用户名',
        icon: 'error'
      })
      return
    }

    if (!password.trim()) {
      wx.showToast({
        title: '请输入密码',
        icon: 'error'
      })
      return
    }

    wx.showLoading({
      title: '登录中...'
    })

    try {
      // 调用后端登录API
      const response = await API.login({
        username: username,
        password: password
      })

      wx.hideLoading()

      if (response && response.token) {
        // 登录成功，保存用户信息和token
        const userInfo = {
          ...response.userInfo,
          token: response.token
        }

        app.login(userInfo)
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        })
        
        setTimeout(() => {
          if (userInfo.role === 'admin') {
            // 管理员跳转到管理后台
            wx.redirectTo({
              url: '/pages/admin/admin'
            })
          } else {
            // 普通用户跳转到加油页面
            wx.switchTab({
              url: '/pages/fuel/fuel'
            })
          }
        }, 1500)
      } else {
        wx.showToast({
          title: '登录失败',
          icon: 'error'
        })
      }
    } catch (error) {
      wx.hideLoading()
      console.error('登录失败:', error)
      wx.showToast({
        title: '登录失败，请检查用户名和密码',
        icon: 'error'
      })
    }
  },

  // 微信授权登录
  async wechatLogin() {
    try {
      wx.showLoading({
        title: '登录中...'
      })

      // 获取用户授权
      const userInfo = await this.getUserProfile()
      
      // 获取登录凭证
      const loginRes = await this.wxLogin()
      
      // 调用后端微信登录API
      const response = await API.wechatLogin({
        code: loginRes.code,
        nickName: userInfo.nickName,
        avatarUrl: userInfo.avatarUrl,
        gender: userInfo.gender,
        city: userInfo.city,
        province: userInfo.province,
        country: userInfo.country
      })

      wx.hideLoading()

      if (response && response.token) {
        // 登录成功，保存用户信息和token
        const userInfo = {
          ...response.userInfo,
          token: response.token
        }

        app.login(userInfo)
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        })
        
        setTimeout(() => {
          if (userInfo.role === 'admin') {
            // 管理员跳转到管理后台
            wx.redirectTo({
              url: '/pages/admin/admin'
            })
          } else {
            // 普通用户跳转到加油页面
            wx.switchTab({
              url: '/pages/fuel/fuel'
            })
          }
        }, 1500)
      } else {
        wx.showToast({
          title: '登录失败',
          icon: 'error'
        })
      }
    } catch (error) {
      wx.hideLoading()
      console.error('微信登录失败:', error)
      wx.showToast({
        title: '登录失败，请重试',
        icon: 'error'
      })
    }
  },

  // 获取用户信息
  getUserProfile() {
    return new Promise((resolve, reject) => {
      wx.getUserProfile({
        desc: '用于完善用户资料',
        success: (res) => {
          resolve(res.userInfo)
        },
        fail: (err) => {
          reject(err)
        }
      })
    })
  },

  // 微信登录
  wxLogin() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: (res) => {
          if (res.code) {
            resolve(res)
          } else {
            reject(new Error('获取登录凭证失败'))
          }
        },
        fail: (err) => {
          reject(err)
        }
      })
    })
  },

  // 显示传统登录方式
  showTraditionalLogin() {
    this.setData({
      showTraditionalLogin: true
    })
  },

  // 隐藏传统登录方式
  hideTraditionalLogin() {
    this.setData({
      showTraditionalLogin: false
    })
  }
})